home *** CD-ROM | disk | FTP | other *** search
/ Euroscene 2 / Euroscene 2.iso / USEFUL / DeliTracker130 / Developer / Developer.run / Examples / SoundFX20.s < prev    next >
Encoding:
Text File  |  1992-09-23  |  12.0 KB  |  669 lines

  1.  
  2.     incdir    "Includes:"
  3.     include    "misc/DeliPlayer.i"
  4.  
  5. ;
  6. ;
  7.     SECTION Player,Code
  8. ;
  9. ;
  10.  
  11.     PLAYERHEADER PlayerTagArray
  12.  
  13.     dc.b '$VER: SoundFX 2.0 player module V0.7 (12 Sep 92)',0
  14.     even
  15.  
  16. PlayerTagArray
  17.     dc.l    DTP_PlayerVersion,0
  18.     dc.l    DTP_PlayerName,PName
  19.     dc.l    DTP_Creator,CName
  20.     dc.l    DTP_Check2,Chk
  21.     dc.l    DTP_Interrupt,PlaySong
  22.     dc.l    DTP_InitPlayer,InitPlay
  23.     dc.l    DTP_EndPlayer,EndPlay
  24.     dc.l    DTP_InitSound,InitSnd
  25.     dc.l    DTP_EndSound,RemSnd
  26.     dc.l    TAG_DONE
  27.  
  28. *-----------------------------------------------------------------------*
  29. ;
  30. ; Player/Creatorname und lokale Daten
  31.  
  32. PName        dc.b 'SoundFX_2.0',0
  33. CName        dc.b '1988/89/90 by C.Haller and C.A.Weber,',10
  34.         dc.b 'adapted by Delirium',0
  35.     even
  36. fx_songend    dc.l 0
  37.  
  38. *-----------------------------------------------------------------------*
  39. ;
  40. ; Testet auf SoundFX2.0-Modul
  41.  
  42. Chk
  43.     move.l    dtg_ChkData(a5),a0
  44.     move.l    124(a0),d0
  45.     subi.l    #'SO31',d0
  46.     rts
  47.  
  48. *-----------------------------------------------------------------------*
  49. ;
  50. ; Init Player
  51.  
  52. InitPlay
  53.     move.l    dtg_AudioAlloc(a5),a0        ; Function
  54.     jsr    (a0)                ; returncode is already set !
  55.     rts
  56.  
  57. *-----------------------------------------------------------------------*
  58. ;
  59. ; End Player
  60.  
  61. EndPlay
  62.     move.l    dtg_AudioFree(a5),a0        ; Function
  63.     jsr    (a0)
  64.     rts
  65.  
  66. *-----------------------------------------------------------------------*
  67. ;
  68. ; Init Sound
  69.  
  70. InitSnd
  71.     moveq    #0,d0
  72.     move.l    dtg_GetListData(a5),a0        ; Function
  73.     jsr    (a0)
  74.     add.l    a0,d0
  75.     move.l    d0,fx_songend
  76.  
  77.     bsr    StartSound            ; Init Sound
  78.  
  79.     move.w    DelayValue(pc),dtg_Timer(a5)
  80.     rts
  81.  
  82. *-----------------------------------------------------------------------*
  83. ;
  84. ; Remove Sound
  85.  
  86. RemSnd
  87.     bsr    PlayDisable            ; End Sound
  88.     rts
  89.  
  90. *-----------------------------------------------------------------------*
  91. ;
  92. ; SoundFX2.0-Replay
  93.  
  94. ****************************************************************************
  95. *                                       *
  96. *                                       *
  97. *          Sound Abspiel Routine zu Sound FX               *
  98. *                                       *
  99. *                                       *
  100. ****************************************************************************
  101.  
  102. ;--------------------------------------------------------------------
  103.  
  104. StartSound
  105.     movem.l    d0-d7/a0-a6,-(sp)
  106.     move.l    a0,SongPointer        ;Zeiger auf SongDaten
  107.     move.w    $0080(a0),DelayValue     ;Geschwindigkeit
  108.     moveq    #$00,d0
  109.     move.b    $0432(a0),d0
  110.     move.w    d0,AnzPatt
  111.     bsr    SongLen            ;Länge der Songdaten berechnen
  112.     add.l    d0,a0
  113.     lea    $04B8(a0),a0
  114.     move.l    SongPointer(pc),a2
  115.     lea    Instruments(pc),a1    ;Tabelle auf Samples
  116.     moveq    #$1E,d7            ;31 Instrumente
  117. CalcIns
  118.     move.l    a0,(a1)+        ;Startadresse des Instr.
  119.     add.l    (a2)+,a0        ;berechnen un speichern
  120.     dbra    d7,CalcIns
  121.     bsr    PlayInit        ;Loop Bereich setzen
  122.     bsr    PlayEnable        ;Player erlauben
  123.     movem.l    (sp)+,d0-d7/a0-a6
  124.     rts
  125.  
  126. SongLen
  127.     movem.l    d1-d7/a0-a6,-(sp)
  128.     move.l    SongPointer(pc),a0
  129.     lea    $0434(a0),a0
  130.     move.w    AnzPatt(pc),d2        ;wieviel Positions
  131.     subq.w    #$01,d2
  132.     moveq    #$00,d1
  133.     moveq    #$00,d0
  134. SongLenLoop
  135.     move.b    (a0)+,d0        ;Patternnummer holen
  136.     cmp.b    d0,d1            ;ist es die höchste ?
  137.     bhi.s    LenHigher        ;nein!
  138.     move.b    d0,d1            ;ja
  139. LenHigher
  140.     dbra    d2,SongLenLoop
  141.     move.l    d1,d0            ;Hoechste BlockNummer nach d0
  142.     addq.w    #$01,d0            ;plus 1
  143.     mulu    #$0400,d0        ;Laenge eines Block
  144.     movem.l    (sp)+,d1-d7/a0-a6
  145.     rts
  146.  
  147. PlayInit
  148.     move.l    d0,-(sp)
  149.     lea    Instruments(pc),a0    ;Zeiger auf instr.Tabelle
  150.     moveq    #$1E,d7            ;31 Instrumente
  151. InitLoop
  152.     move.l    (a0)+,a1        ;Zeiger holen
  153.     move.l    a1,d0
  154.     beq.s    InitLoop2
  155.     cmp.l    fx_songend,d0
  156.     bge.s    InitLoop2
  157.     clr.l    (a1)            ;erstes Longword löschen
  158. InitLoop2
  159.     dbra    d7,InitLoop
  160.     move.l    (sp)+,d0
  161.     rts
  162.  
  163. PlayEnable
  164.     lea    $00DFF000,a0
  165.     move.l    d0,-(sp)
  166.     move.w    #$FFFF,PlayLock        ;player zulassen
  167.     moveq    #$00,d0
  168.     move.w    d0,$00A8(a0)
  169.     move.w    d0,$00B8(a0)
  170.     move.w    d0,$00C8(a0)
  171.     move.w    d0,$00D8(a0)
  172.     clr.w    Timer            ;zahler auf 0
  173.     clr.l    TrackPos        ;zeiger auf pos
  174.     clr.l    PosCounter        ;zeiger innehalb des pattern
  175.     move.l    (sp)+,d0
  176.     rts
  177.  
  178. ;--------------------------------------------------------------------
  179.  
  180. PlayDisable
  181.     lea    $00DFF000,a0
  182.     clr.w    PlayLock        ;player sperren
  183.     move.l    d0,-(sp)
  184.     moveq    #$00,d0
  185.     move.w    d0,$00A8(a0)
  186.     move.w    d0,$00B8(a0)
  187.     move.w    d0,$00C8(a0)
  188.     move.w    d0,$00D8(a0)
  189.     move.w    #$000F,$0096(a0)
  190.     move.l    (sp)+,d0
  191.     rts
  192.  
  193. ;--------------------------------------------------------------------
  194. ;
  195. ; hier werden 5 * effekte gespielt und einmal der song
  196.  
  197. PlaySong                ;HauptAbspielRoutine
  198.     movem.l    d0-d7/a0-a6,-(sp)
  199.     addq.w    #$01,Timer        ;zähler erhöhen
  200.     cmp.w    #$0006,Timer        ;schon 6?
  201.     bne.s    CheckEffects        ;wenn nicht -> effekte
  202.     clr.w    Timer            ;sonst zähler löschen
  203.     bsr    PlaySound        ;und sound spielen
  204.     movem.l    (sp)+,d0-d7/a0-a6
  205.     rts
  206.  
  207. CheckEffects
  208.     moveq    #$03,d7            ;4 kanäle
  209.     lea    ChannelData0(pc),a6    ;zeiger auf daten für 0
  210.     lea    $00DFF0A0,a3
  211. EffLoop
  212.     bsr.s    MakeEffekts        ;Effekt spielen
  213.     add.w    #$0010,a3        ;nächster Kanal
  214.     add.w    #$0024,a6        ;Nächste KanalDaten
  215.     dbra    d7,EffLoop
  216.     movem.l    (sp)+,d0-d7/a0-a6
  217.     rts
  218.  
  219. MakeEffekts
  220.     move.w    $0016(a6),d0
  221.     beq.s    NoStep
  222.     bmi.s    StepItUp
  223.     add.w    d0,$0018(a6)
  224.     move.w    $0018(a6),d0
  225.     move.w    d0,$0010(a6)
  226.     move.w    $001A(a6),d1
  227.     cmp.w    d0,d1
  228.     bhi.s    StepOk
  229.     clr.w    $0016(a6)
  230.     move.w    d1,d0
  231.     move.w    d0,$0010(a6)
  232. StepOk
  233.     move.w    d0,$0006(a3)
  234.     move.w    d0,$0018(a6)
  235.     rts
  236.  
  237. StepItUp
  238.     add.w    d0,$0018(a6)
  239.     move.w    $0018(a6),d0
  240.     move.w    d0,$0010(a6)
  241.     move.w    $001A(a6),d1
  242.     cmp.w    d0,d1
  243.     blt.s    StepOk2
  244.     clr.w    $0016(a6)
  245.     move.w    d1,d0
  246.     move.w    d0,$0010(a6)
  247. StepOk2
  248.     move.w    d0,$0006(a3)
  249.     move.w    d0,$0018(a6)
  250.     rts
  251.  
  252. NoStep
  253.     move.b    $0002(a6),d0
  254.     and.w    #$000F,d0
  255.     tst.w    d0
  256.     beq.s    NoEff
  257.     subq.w    #$01,d0
  258.     lsl.w    #$02,d0
  259.     lea    EffTable(pc),a0
  260.     move.l    $00(a0,d0.w),d0
  261.     beq.s    NoEff
  262.     move.l    d0,a0
  263.     jsr    (a0)
  264. NoEff
  265.     rts
  266.  
  267. EffTable
  268.     dc.l    appreggiato
  269.     dc.l    pitchbend
  270.     dc.l    0    ; LedOn
  271.     dc.l    0    ; LedOff
  272.     dc.l    0
  273.     dc.l    0
  274.     dc.l    SetStepUp
  275.     dc.l    SetStepDown
  276.     dc.l    0
  277.     dc.l    0
  278.     dc.l    0
  279.     dc.l    0
  280.     dc.l    0
  281.     dc.l    0
  282.     dc.l    0
  283.  
  284. LedOn
  285.     bset    #$01,$00BFE001
  286.     rts
  287.  
  288. LedOff
  289.     bclr    #$01,$00BFE001
  290.     rts
  291.  
  292. SetStepDown
  293.     st    d4
  294.     bra.s    StepFinder
  295.  
  296. SetStepUp
  297.     moveq    #$00,d4
  298. StepFinder
  299.     clr.w    $0016(a6)
  300.     move.w    $0010(a6),$0018(a6)
  301.     move.b    $0003(a6),d2
  302.     and.w    #$000F,d2
  303.     tst.w    d4
  304.     beq.s    NoNegIt
  305.     neg.w    d2
  306. NoNegIt
  307.     move.w    d2,$0016(a6)
  308.     moveq    #$00,d2
  309.     move.b    $0003(a6),d2
  310.     lsr.w    #$04,d2
  311.     move.w    $0010(a6),d0
  312.     lea    NoteTable(pc),a0
  313. StepUpFindLoop
  314.     move.w    (a0),d1
  315.     cmp.w    #$FFFF,d1
  316.     beq.s    EndStepUpFind
  317.     cmp.w    d1,d0
  318.     beq.s    StepUpFound
  319.     addq.w    #$02,a0
  320.     bra.s    StepUpFindLoop
  321.  
  322. StepUpFound
  323.     add.w    d2,d2
  324.     tst.w    d4
  325.     bne.s    NoNegStep
  326.     neg.w    d2
  327. NoNegStep
  328.     move.w    $00(a0,d2.w),d0
  329.     move.w    d0,$001A(a6)
  330.     rts
  331.  
  332. EndStepUpFind
  333.     move.w    d0,$001A(a6)
  334.     rts
  335.  
  336. appreggiato
  337.     lea    ArpeTable(pc),a0
  338.     moveq    #$00,d0
  339.     move.w    Timer(pc),d0
  340.     subq.w    #$01,d0
  341.     lsl.w    #$02,d0
  342.     move.l    $00(a0,d0.w),a0
  343.     jmp    (a0)
  344.  
  345. ArpeTable
  346.     dc.l    Arpe1
  347.     dc.l    Arpe2
  348.     dc.l    Arpe3
  349.     dc.l    Arpe2
  350.     dc.l    Arpe1
  351.  
  352. Arpe4
  353.     add.w    d0,d0
  354.     move.w    $0010(a6),d1
  355.     lea    NoteTable(pc),a0
  356. Arpe5
  357.     move.w    $00(a0,d0.l),d2
  358.     tst.w    (a0)
  359.     bmi.s    Arpe7
  360.     cmp.w    (a0),d1
  361.     beq.s    Arpe6
  362.     addq.w    #$02,a0
  363.     bra.s    Arpe5
  364.  
  365. Arpe1
  366.     moveq    #$00,d0
  367.     move.b    $0003(a6),d0
  368.     lsr.b    #$04,d0
  369.     bra.s    Arpe4
  370.  
  371. Arpe2
  372.     moveq    #$00,d0
  373.     move.b    $0003(a6),d0
  374.     and.b    #$0F,d0
  375.     bra.s    Arpe4
  376.  
  377. Arpe3
  378.     move.w    $0010(a6),d2
  379. Arpe6
  380.     move.w    d2,$0006(a3)
  381.     rts
  382.  
  383. Arpe7
  384.     move.w    #$00F0,$00DFF180
  385.     rts
  386.  
  387. pitchbend
  388.     moveq    #$00,d0
  389.     move.b    $0003(a6),d0
  390.     lsr.b    #$04,d0
  391.     tst.b    d0
  392.     beq.s    pitch2
  393.     move.w    (a6),d1
  394.     and.w    #$1000,d1
  395.     and.w    #$EFFF,(a6)
  396.     add.w    d0,(a6)
  397.     move.w    (a6),d0
  398.     move.w    d0,$0006(a3)
  399.     or.w    d1,(a6)
  400.     rts
  401.  
  402. pitch2
  403.     moveq    #$00,d0
  404.     move.b    $0003(a6),d0
  405.     and.b    #$0F,d0
  406.     tst.b    d0
  407.     beq.s    pitch3
  408.     move.w    (a6),d1
  409.     and.w    #$1000,d1
  410.     and.w    #$EFFF,(a6)
  411.     sub.w    d0,(a6)
  412.     move.w    (a6),d0
  413.     move.w    d0,$0006(a3)
  414.     or.w    d1,(a6)
  415. pitch3
  416.     rts
  417.  
  418. PlaySound
  419.     move.l    SongPointer(pc),a0    ;Zeiger auf SongFile
  420.     lea    $0434(a0),a2        ;Zeiger auf Patterntab.
  421.     lea    $0090(a0),a3        ;Zeiger auf Instr.Daten
  422.     lea    $04B8(a0),a0        ;Zeiger auf BlockDaten
  423.     move.l    TrackPos(pc),d0        ;Postionzeiger
  424.     moveq    #$00,d1
  425.     move.b    $00(a2,d0.l),d1
  426.     moveq    #$0A,d7
  427.     lsl.l    d7,d1            ;*1024 / länge eines Pattern
  428.     add.l    PosCounter(pc),d1    ;Offset ins Pattern
  429.     clr.w    DmaCon
  430.     lea    $00DFF0A0,a4
  431.     lea    ChannelData0(pc),a6    ;Daten für Kanal0
  432.     moveq    #$03,d7            ;4 Kanäle
  433. SoundHandleLoop
  434.     bsr    PlayNote        ;aktuelle Note spielen
  435.     add.w    #$0010,a4        ;nächster Kanal
  436.     add.w    #$0024,a6        ;nächste Daten
  437.     dbra    d7,SoundHandleLoop
  438.     move.w    DmaCon(pc),d0
  439.     and.w    #$000F,d0
  440.     or.w    #$8000,d0
  441.     move.w    d0,$00DFF096
  442.     bsr    Delay
  443.     lea    ChannelData3(pc),a6
  444.     lea    $00DFF0D0,a4
  445.     moveq    #$03,d7
  446. SetRegsLoop
  447.     move.l    $000A(a6),(a4)        ;Adresse
  448.     move.w    $000E(a6),$0004(a4)    ;Länge
  449.     sub.w    #$0024,a6        ;nächste Daten
  450.     sub.w    #$0010,a4        ;nächster Kanal
  451.     dbra    d7,SetRegsLoop
  452.     tst.w    PlayLock
  453.     beq.s    NoEndPattern
  454.     tst.w    Break
  455.     beq.s    NoBreakPattern
  456.     move.l    #$000003F0,PosCounter
  457.     clr.w    Break
  458. NoBreakPattern
  459.     add.l    #$00000010,PosCounter    ;PatternPos erhöhen
  460.     cmp.l    #$00000400,PosCounter    ;schon Ende ?
  461.     blt.s    NoEndPattern
  462.     clr.l    PosCounter        ;PatternPos löschen
  463.     tst.b    PlayLock
  464.     beq.s    NoAddPos
  465.     addq.l    #$01,TrackPos        ;Position erhöhen
  466. NoAddPos
  467.     move.w    AnzPatt(pc),d0        ;AnzahlPosition
  468.     move.l    TrackPos(pc),d1        ;Aktuelle Pos
  469.     cmp.w    d0,d1            ;Ende?
  470.     bne.s    NoEndPattern        ;nein!
  471.     clr.l    TrackPos        ;ja/ Sound von vorne
  472. NoEndPattern
  473.     rts
  474.  
  475. PlayNote
  476.     tst.b    $0014(a6)
  477.     bne.s    NoGetNote
  478.     clr.l    (a6)
  479.     tst.w    PlayLock
  480.     beq.s    NoGetNote
  481.     move.l    $00(a0,d1.l),(a6)
  482. NoGetNote
  483.     addq.w    #$04,d1
  484.     moveq    #$00,d2
  485.     cmp.w    #$FFFD,(a6)
  486.     beq    NoInstr2
  487.     move.b    $0002(a6),d2
  488.     and.b    #$F0,d2
  489.     lsr.b    #$04,d2
  490.     btst    #$04,(a6)
  491.     beq.s    PlayInstr
  492.     add.b    #$10,d2
  493. PlayInstr
  494.     tst.b    d2
  495.     beq    NoInstr2
  496.     lea    Instruments(pc),a1
  497.     subq.w    #$01,d2
  498.     move.w    d2,d4
  499.     lsl.w    #$02,d2
  500.     mulu    #$001E,d4
  501.     move.l    $00(a1,d2.w),$0004(a6)
  502.     move.w    $16(a3,d4.l),$0008(a6)
  503.     move.w    $18(a3,d4.l),$0012(a6)
  504.     moveq    #$00,d3
  505.     move.w    $1A(a3,d4.l),d3
  506.     tst.w    d3
  507.     beq.s    NoRepeat
  508.     move.l    $0004(a6),d2
  509.     add.l    d3,d2
  510.     move.l    d2,$000A(a6)
  511.     move.w    $1C(a3,d4.w),$000E(a6)
  512.     move.w    $0012(a6),d3
  513.     bra.s    NoInstr
  514.  
  515. NoRepeat
  516.     move.l    $0004(a6),d2
  517.     add.l    d3,d2
  518.     move.l    d2,$000A(a6)
  519.     move.w    $1C(a3,d4.l),$000E(a6)
  520.     move.w    $0012(a6),d3
  521. NoInstr
  522.     move.b    $0002(a6),d2
  523.     and.w    #$000F,d2
  524.     cmp.b    #$05,d2
  525.     beq.s    ChangeUpVolume
  526.     cmp.b    #$06,d2
  527.     bne.s    SetVolume2
  528.     moveq    #$00,d2
  529.     move.b    $0003(a6),d2
  530.     sub.w    d2,d3
  531.     tst.w    d3
  532.     bpl.s    SetVolume2
  533.     clr.w    d3
  534.     bra.s    SetVolume2
  535.  
  536. ChangeUpVolume
  537.     moveq    #$00,d2
  538.     move.b    $0003(a6),d2
  539.     add.w    d2,d3
  540.     tst.w    d3
  541.     cmp.w    #$0040,d3
  542.     ble.s    SetVolume2
  543.     moveq    #$40,d3
  544. SetVolume2
  545.     move.w    d3,$0008(a4)
  546. NoInstr2
  547.     cmp.w    #$FFFD,(a6)
  548.     bne.s    NoPic
  549.     clr.w    $0002(a6)
  550.     bra.s    NoNote
  551.  
  552. NoPic
  553.     tst.w    (a6)
  554.     beq.s    NoNote
  555.     clr.w    $0016(a6)
  556.     move.w    (a6),d0
  557.     and.w    #$EFFF,d0
  558.     move.w    d0,$0010(a6)
  559.     move.w    $0014(a6),d0
  560.     ext.w    d0
  561.     move.w    d0,$00DFF096
  562.     bsr    Delay
  563.     cmp.w    #$FFFE,(a6)
  564.     bne.s    NoStop
  565.     move.w    #$0000,$0008(a4)
  566.     bra.s    Super
  567.  
  568. NoStop
  569.     cmp.w    #$FFFC,(a6)
  570.     bne.s    NoBreak
  571.     st    Break
  572.     and.w    #$EFFF,(a6)
  573.     bra    EndNote
  574.  
  575. NoPic2
  576.     and.w    #$EFFF,(a6)
  577.     bra.s    NoNote
  578.  
  579. NoBreak
  580.     cmp.w    #$FFFB,(a6)
  581.     beq.s    NoPic2
  582.     move.l    $0004(a6),(a4)
  583.     move.w    $0008(a6),$0004(a4)
  584.     move.w    (a6),d0
  585.     and.w    #$EFFF,d0
  586.     move.w    d0,$0006(a4)
  587. Super
  588.     move.w    $0014(a6),d0
  589.     ext.w    d0
  590.     or.w    d0,DmaCon
  591. NoNote
  592.     clr.b    $0014(a6)
  593. EndNote
  594.     rts
  595.  
  596. Delay
  597.     movem.l    d0-d3,-(sp)
  598.     moveq    #$05,d0
  599.     move.l    d0,d1
  600. DelayLoop
  601.     bsr.s    WaitLine
  602.     move.w    d0,d2
  603. DelayLoop2
  604.     bsr.s    WaitLine
  605.     cmp.w    d0,d2
  606.     beq.s    DelayLoop2
  607.     dbra    d1,DelayLoop
  608.     movem.l    (sp)+,d0-d3
  609.     rts
  610.  
  611. WaitLine
  612.     move.l    $00DFF004,d0
  613.     and.l    #$0001FFFF,d0
  614.     lsr.l    #$08,d0
  615.     tst.w    d0
  616.     beq.s    WaitLine
  617.     rts
  618.  
  619. ;--------------------------------------------------------------------
  620.  
  621. ChannelData0    dcb.b    $14,0            ;Daten für Note
  622.         dc.w    $0001
  623.         dcb.b    $0E,0
  624.  
  625. ChannelData1    dcb.b    $14,0            ;u.s.w
  626.         dc.w    $0002
  627.         dcb.b    $0E,0
  628.  
  629. ChannelData2    dcb.b    $14,0            ;etc.
  630.         dc.w    $0004
  631.         dcb.b    $0E,0
  632.  
  633. ChannelData3    dcb.b    $14,0            ;a.s.o
  634.         dc.w    $0008
  635.         dcb.b    $0E,0
  636.  
  637. Instruments    dcb.l 31,0            ;Zeiger auf die 31 Instrumente
  638.  
  639. PosCounter    dc.l 0                ;Offset ins Pattern
  640.  
  641. TrackPos    dc.l 0                ;Position Counter
  642.  
  643. Break        dc.w 0                ;Flag fuer 'Pattern abbrechen'
  644.  
  645. Timer        dc.w 0                ;Zähler 0-5
  646.  
  647. DmaCon        dc.w 0                ;Zwischenspeicher für DmaCon
  648.  
  649. AnzPatt        dc.w 0                ;Anzahl Positions
  650.  
  651. PlayLock    dc.w 0                ;Flag fuer 'Sound erlaubt'
  652.  
  653. DelayValue    dc.w 0
  654.  
  655. SongPointer    dc.l 0
  656.  
  657.  
  658.     dc.w    $0434,$0434,$0434,$0434,$0434,$0434,$0434,$0434,$0434,$0434
  659.     dc.w    $0434,$0434,$0434,$0434,$0434,$0434,$0434,$0434,$0434,$0434
  660. NoteTable
  661.     dc.w    $0434,$03F8,$03C0,$038A,$0358,$0328,$02FA,$02D0,$02A6,$0280
  662.     dc.w    $025C,$023A,$021A,$01FC,$01E0,$01C5,$01AC,$0194,$017D,$0168
  663.     dc.w    $0153,$0140,$012E,$011D,$010D,$00FE,$00F0,$00E2,$00D6,$00CA
  664.     dc.w    $00BE,$00B4,$00AA,$00A0,$0097,$008F,$0087,$007F,$0078,$0071
  665.     dc.w    $0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
  666.     dc.w    $0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
  667.     dc.w    $0071,$0071,$0071,$0071,$0071,$0071,$FFFF
  668.  
  669.